home *** CD-ROM | disk | FTP | other *** search
- VERSION 4.00
- Begin VB.Form MapServers
- BorderStyle = 4 'Fixed ToolWindow
- Caption = "Map FTP Server"
- ClientHeight = 1740
- ClientLeft = 1815
- ClientTop = 2160
- ClientWidth = 5835
- Height = 2145
- Icon = "MapServe.frx":0000
- Left = 1755
- LinkTopic = "Form1"
- LockControls = -1 'True
- MaxButton = 0 'False
- MinButton = 0 'False
- ScaleHeight = 1740
- ScaleWidth = 5835
- ShowInTaskbar = 0 'False
- Top = 1815
- Width = 5955
- Begin VB.CheckBox chkReconnect
- Caption = "Reconnec&t at logon"
- Height = 240
- Left = 960
- TabIndex = 5
- Top = 1155
- Width = 3090
- End
- Begin VB.CommandButton cmdAdd
- Caption = "&Add"
- Height = 345
- Left = 135
- TabIndex = 2
- Top = 630
- Width = 1290
- End
- Begin VB.CommandButton cmdRemove
- Caption = "&Remove"
- Enabled = 0 'False
- Height = 345
- Left = 1470
- TabIndex = 3
- Top = 630
- Width = 1290
- End
- Begin VB.CommandButton cmdProperties
- Caption = "&Properties"
- Enabled = 0 'False
- Height = 345
- Left = 2805
- TabIndex = 4
- Top = 630
- Width = 1290
- End
- Begin VB.ComboBox cmbServers
- Height = 315
- Left = 960
- Style = 2 'Dropdown List
- TabIndex = 1
- Top = 180
- Width = 3135
- End
- Begin VB.CommandButton cmdCancel
- Cancel = -1 'True
- Caption = "Cancel"
- Height = 345
- Left = 4515
- TabIndex = 7
- Top = 630
- Width = 1125
- End
- Begin VB.CommandButton cmdOK
- Caption = "OK"
- Default = -1 'True
- Enabled = 0 'False
- Height = 345
- Left = 4515
- TabIndex = 6
- Top = 180
- Width = 1125
- End
- Begin VB.Label lblGeneric
- Caption = "&Server:"
- Height = 195
- Index = 0
- Left = 180
- TabIndex = 0
- Top = 240
- Width = 675
- End
- Attribute VB_Name = "MapServers"
- Attribute VB_Creatable = False
- Attribute VB_Exposed = False
- Option Explicit
- '<Public>--------------------------------------------
- Public Servers As Collection
- Public ThisExplorer As Form
- Public ThisServer As FTPServer
- Public PressedOK As Boolean
- '</Public>-------------------------------------------
- '<Private>------------------------------------------
- Private NumberServers As Integer
- '</Private>-----------------------------------------
- Private Sub cmbServers_Click()
- cmdRemove.Enabled = True
- cmdProperties.Enabled = True
- cmdOK.Enabled = True
- cmdOK.Default = True
- On Error Resume Next '---- possible after remove
- chkReconnect.Value = GetServer(cmbServers.List(cmbServers.ListIndex)).Reconnect
- On Error GoTo 0
- End Sub
- Private Sub cmdAdd_Click()
- With Server
- .Mode = ciAdd
- .MyCaption = "Add FTP Server"
- .Show vbModal
- If (Not .PressedOK) Then Exit Sub
-
- '---- add this host to the hosts collection
- On Error GoTo DuplicateKey
- .ThisServer.Reconnect = chkReconnect.Value
- Call Servers.Add(.ThisServer, .ThisServer.Alias)
-
- '---- object.Add(index, key, text, icon, smallIcon)
- cmbServers.AddItem .ThisServer.Alias
- cmbServers.ListIndex = cmbServers.ListCount - 1
- End With
- Exit Sub
- DuplicateKey:
- MsgBox "The alias '" & Server.ThisServer.Alias & "' is already in your servers collection.", vbOKOnly + vbInformation, "Add Server Error"
- End Sub
- Private Sub cmdCancel_Click()
- PressedOK = False
- Unload Me
- End Sub
- Private Sub cmdOK_Click()
- Dim ListIndex As Integer
- ListIndex = cmbServers.ListIndex
- '---- if there is no selection just go away like the win explorer net mapping
- If (ListIndex = lbNoSelection) Then
- Set ThisServer = Nothing
- PressedOK = False
- Else
- '---- create the FTP server which will be used by the Explorer
- Set ThisServer = GetServer(cmbServers.List(ListIndex))
- ThisServer.Reconnect = chkReconnect.Value
- PressedOK = True
- End If
- Unload Me
- End Sub
- Private Sub cmdProperties_Click()
- With Server
- .Mode = ciProperties
- .MyCaption = "FTP Server Properties"
- Set .ThisServer = GetServer(cmbServers.List(cmbServers.ListIndex))
- .Show vbModal
- If (Not .PressedOK) Then Exit Sub
-
- '---- modify the properties
- .ThisServer.Reconnect = chkReconnect.Value
- cmbServers.List(cmbServers.ListIndex) = .ThisServer.Alias
- End With
- End Sub
- Private Sub cmdRemove_Click()
- Dim ThisNode As Node
- Dim Alias As String
- On Error Resume Next '---- should never happen!
- Alias = cmbServers.List(cmbServers.ListIndex)
- Call Servers.Remove(Alias)
- Call cmbServers.RemoveItem(cmbServers.ListIndex)
- '---- remove item from explorer
- Set ThisNode = ThisExplorer.Tree.Nodes.Item("Root.FTPServers." & Alias)
- Call ThisExplorer.RemoveNode(ThisNode)
- On Error GoTo 0
- cmdOK.Enabled = False
- cmdRemove.Enabled = False
- cmdProperties.Enabled = False
- Set ThisNode = Nothing
- End Sub
- Private Sub Form_Initialize()
- Dim i As Integer
- Dim PackedServer As String
- Set Servers = New Collection
- '---- get the hosts from the registry
- NumberServers = Val(GetSetting(App.ProductName, "ciFTPServers", "ciNumberFTPServers"))
- For i = 1 To NumberServers
- PackedServer = GetSetting(App.ProductName, "ciFTPServers", "ciFTPServer" & i)
- Call UnpackServer(PackedServer)
- Next
- End Sub
- Private Sub Form_Load()
- Dim InstanceServer As FTPServer
- '---- list the servers
- For Each InstanceServer In Servers
- cmbServers.AddItem InstanceServer.Alias
- Next
- If (cmbServers.ListCount > 0) Then cmbServers.ListIndex = 0
- Call CenterForm(Me)
- End Sub
- Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
- If (Not (UnloadMode = vbFormCode)) Then
- PressedOK = False
- End If
- End Sub
- '-----------------------------------------------------
- '<Purpose> unpacks a delimited string into an
- ' FTPServer class object
- '<Note> change this function to retrieve data from
- ' any repository
- '-----------------------------------------------------
- Private Function UnpackServer(PackedAddress As String) As Boolean
- Dim CharPos As Integer
- Dim ThisServer As New FTPServer
- Dim Alias As String
- On Error GoTo BadServer
- CharPos = InStr(PackedAddress, regDelimiter)
- Alias = left(PackedAddress, CharPos - 1)
- ThisServer.Alias = Alias
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- CharPos = InStr(PackedAddress, regDelimiter)
- ThisServer.HostName = left(PackedAddress, CharPos - 1)
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- CharPos = InStr(PackedAddress, regDelimiter)
- ThisServer.HostAddress = left(PackedAddress, CharPos - 1)
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- CharPos = InStr(PackedAddress, regDelimiter)
- ThisServer.LoginName = left(PackedAddress, CharPos - 1)
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- CharPos = InStr(PackedAddress, regDelimiter)
- ThisServer.Password = left(PackedAddress, CharPos - 1)
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- CharPos = InStr(PackedAddress, regDelimiter)
- ThisServer.Reconnect = Val(left(PackedAddress, CharPos - 1))
- PackedAddress = Mid(PackedAddress, CharPos + 1)
- ThisServer.ServerType = Val(PackedAddress)
- Call Servers.Add(ThisServer, Alias)
- UnpackServer = True
- Cleanup:
- Set ThisServer = Nothing
- Exit Function
- BadServer:
- MsgBox "An error occurred while unpacking an FTP Server: " & Err.Description, vbOKOnly + vbInformation
- UnpackServer = False
- GoTo Cleanup
- End Function
- '------------------------------------------------------
- '<Purpose> returns an FTPServer class object
- '------------------------------------------------------
- Public Function GetServer(Alias As String) As FTPServer
- On Error GoTo BadItem
- Set GetServer = Servers.Item(Alias)
- On Error GoTo 0
- Exit Function
- BadItem:
- Set GetServer = Nothing
- On Error GoTo 0
- End Function
- '-----------------------------------------------------
- '<Purpose> packs a FTPServer class object into a
- ' delimited string for storage in the registry
- '<Note> change this function to store data in any
- ' repository such as a relational DB
- '-----------------------------------------------------
- Private Function PackServer(ThisServer As FTPServer) As String
- Dim Temp As String
- Temp = ThisServer.Alias & regDelimiter
- Temp = Temp & ThisServer.HostName & regDelimiter
- Temp = Temp & ThisServer.HostAddress & regDelimiter
- Temp = Temp & ThisServer.LoginName & regDelimiter
- Temp = Temp & ThisServer.Password & regDelimiter
- Temp = Temp & ThisServer.Reconnect & regDelimiter
- Temp = Temp & ThisServer.ServerType
- PackServer = Temp
- End Function
- Private Sub Form_Terminate()
- Dim i As Integer
- NumberServers = Servers.Count
- For i = 1 To NumberServers
- Call SaveSetting(App.ProductName, "ciFTPServers", "ciFTPServer" & i, PackServer(Servers(i)))
- Next
- 'SaveSetting(appname, section, key, setting)
- Call SaveSetting(App.ProductName, "ciFTPServers", "ciNumberFTPServers", NumberServers)
- '---- explicitly clean up all object
- Set Servers = Nothing
- Set ThisServer = Nothing
- End Sub
- '------------------------------------------------------
- '<Purpose> turns off the "Reconnect" bit on a server
- '------------------------------------------------------
- Public Sub Disconnect(Alias As String)
- Dim ThisServer As FTPServer
- Set ThisServer = GetServer(Alias)
- ThisServer.Reconnect = 0
-
- Set ThisServer = Nothing
- End Sub
-